package com.br.servlets;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONException;
import org.json.JSONObject;

import com.br.dao.JogadorDao;
import com.br.model.Jogador;
import com.br.util.StopUtils;

@WebServlet(value = "/EntrarJogo")
public class EntrarJogo extends HttpServlet {

	private static final long serialVersionUID = 1L;
	
	private static Logger logger = LogManager.getLogger(EntrarJogo.class.getName());

	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {

		logger.debug("INIT "+StopUtils.logAllParameters(req));
		
		String email = req.getParameter("email");
		String nome = req.getParameter("nome");

		JSONObject response = new JSONObject();

		try {
			if (StopUtils.notEmpty(nome) && StopUtils.notEmpty(email)) {
				JogadorDao dao = new JogadorDao();
				
				Jogador eu = dao.getByEmail(email);

				if(eu == null){
					//cria jogador
					eu = new Jogador();
					eu.setNome(nome);
					eu.setEmail(email);
					dao.add(eu);
				}
				
				//atualiza sessao
				req.getSession(true).setAttribute("jogador", eu);
				
				response.put("error", false);
			} else {
				response.put("error", true);
				response.put("errorMsg", "Campos enviados inválidos.");
			}

		} catch (JSONException e) {
			logger.error("Erro JSON", e);
		}

		// retorna o json
		res.setCharacterEncoding("UTF-8");
		res.setContentType("application/json");
		res.getOutputStream().write(response.toString().getBytes());
		res.getOutputStream().flush();
		
		logger.debug("END "+response.toString());
	}

}
